
<!DOCTYPE HTML>
<html lang="zh-hans" >
    <head>
        <meta charset="UTF-8">
        <title>前言 · C++导览 第二版 简体中文版</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="description" content="">
        <meta name="generator" content="HonKit 5.1.1">
        <meta name="author" content="Windsting">
        
        
    
    <link rel="stylesheet" href="gitbook/style.css">

    
            
                
                <link rel="stylesheet" href="gitbook/@dogatana/honkit-plugin-page-toc-button/plugin.css">
                
            
                
                <link rel="stylesheet" href="gitbook/@dogatana/honkit-plugin-back-to-top-button/plugin.css">
                
            
                
                <link rel="stylesheet" href="gitbook/gitbook-plugin-forkmegithub/plugin.css">
                
            
                
                <link rel="stylesheet" href="gitbook/@honkit/honkit-plugin-highlight/website.css">
                
            
                
                <link rel="stylesheet" href="gitbook/gitbook-plugin-search/search.css">
                
            
                
                <link rel="stylesheet" href="gitbook/gitbook-plugin-fontsettings/website.css">
                
            
        

    

    
        
        <link rel="stylesheet" href="styles/website.css">
        
    
        
    
        
    
        
    
        
    
        
    

        
    
    
    <meta name="HandheldFriendly" content="true"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <link rel="apple-touch-icon-precomposed" sizes="152x152" href="gitbook/images/apple-touch-icon-precomposed-152.png">
    <link rel="shortcut icon" href="gitbook/images/favicon.ico" type="image/x-icon">

    
    <link rel="next" href="ch01.html" />
    
    
    <link rel="prev" href="translation_note.html" />
    

    </head>
    <body>
        
<div class="book honkit-cloak">
    <div class="book-summary">
        
            
<div id="book-search-input" role="search">
    <input type="text" placeholder="输入并搜索" />
</div>

            
                <nav role="navigation">
                


<ul class="summary">
    
    
    
        
        <li>
            <a href="https://github.com/windsting/a-tour-of-cpp-2nd-cn" target="_blank" class="custom-link">Github Link</a>
        </li>
    
    

    
    <li class="divider"></li>
    

    
        
        
    
        <li class="chapter " data-level="1.1" data-path="translation_note.html">
            
                <a href="translation_note.html">
            
                    
                    译者言
            
                </a>
            

            
        </li>
    
        <li class="chapter active" data-level="1.2" data-path="./">
            
                <a href="./">
            
                    
                    前言
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.3" data-path="ch01.html">
            
                <a href="ch01.html">
            
                    
                    1 基础知识
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4" data-path="ch02.html">
            
                <a href="ch02.html">
            
                    
                    2 用户定义类型
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.5" data-path="ch03.html">
            
                <a href="ch03.html">
            
                    
                    3 模块化
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.6" data-path="ch04.html">
            
                <a href="ch04.html">
            
                    
                    4 类
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.7" data-path="ch05.html">
            
                <a href="ch05.html">
            
                    
                    5 基本操作
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.8" data-path="ch06.html">
            
                <a href="ch06.html">
            
                    
                    6 模板
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.9" data-path="ch07.html">
            
                <a href="ch07.html">
            
                    
                    7 概束和泛型编程
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.10" data-path="ch08.html">
            
                <a href="ch08.html">
            
                    
                    8 标准库概览
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.11" data-path="ch09.html">
            
                <a href="ch09.html">
            
                    
                    9 字符串和正则表达式
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.12" data-path="ch10.html">
            
                <a href="ch10.html">
            
                    
                    10 输入输出
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.13" data-path="ch11.html">
            
                <a href="ch11.html">
            
                    
                    11 容器
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.14" data-path="ch12.html">
            
                <a href="ch12.html">
            
                    
                    12 算法
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.15" data-path="ch13.html">
            
                <a href="ch13.html">
            
                    
                    13 实用功能
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.16" data-path="ch14.html">
            
                <a href="ch14.html">
            
                    
                    14 数值
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.17" data-path="ch15.html">
            
                <a href="ch15.html">
            
                    
                    15 并发
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.18" data-path="ch16.html">
            
                <a href="ch16.html">
            
                    
                    16 历史及兼容性
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.19" data-path="idx.html">
            
                <a href="idx.html">
            
                    
                    索引
            
                </a>
            

            
        </li>
    

    

    <li class="divider"></li>

    <li>
        <a href="https://github.com/honkit/honkit" target="blank" class="gitbook-link">
            本书使用 HonKit 发布
        </a>
    </li>
</ul>


                </nav>
            
        
    </div>

    <div class="book-body">
        
            <div class="body-inner">
                
                    

<div class="book-header" role="navigation">
    

    <!-- Title -->
    <h1>
        <i class="fa fa-circle-o-notch fa-spin"></i>
        <a href="." >前言</a>
    </h1>
</div>




                    <div class="page-wrapper" tabindex="-1" role="main">
                        <div class="page-inner">
                            
<div id="book-search-results">
    <div class="search-noresults">
    
                                <section class="normal markdown-section">
                                

    
        
                                <p><a class="en-page-number" id="xi"></a></p>
<h1 id="preface">前言 </h1>
<blockquote>
<p>施教之重，在于简。</p>
<p>—— 西塞罗</p>
</blockquote>
<p>如今的 C++ 像个新语言。就是说，跟 C++98 相比，我可以做到更明确，更简洁，也更精炼。
进一步说，编译器核验得更出色，生成的程序运行得更快。</p>
<p>这里所说的 C++ 是被命名为 C++17 的<span title="本书英文版出版于 2018 年。 —— 译者注">
现行 ISO C++ 标准</span><sup><a href="#fn_1" id="reffn_1">1</a></sup>，已经被厂商广泛支持，本书对其做一概览。
此外还提到了概束和模块，
它们的定义在 ISO 技术规范（Technical Specification）里，
虽然已经有些应用，但在 C++20 之前尚无计划被纳入标准。</p>
<p>跟其它新兴的编程语言一样，C++体量巨大，还有为数众多的程序库以供不时之需。
这本小册子旨在为资深程序员提供一个概念，去了解现代C++的主要构成。
它涵盖了绝大多数语言特性及多数标准库组件。
本书可在数小时内读完，但很明显，要想写出优良的C++程序远非一日之功。
幸而此书目的并不在于精通，而是给出一个概览，一些关键用例，为程序员入门助一臂之力。</p>
<p>这里假设你有一定的编程经验。如果没有，建议先读一本教材，例如
<span title="该书已经有中文版《C++程序设计：原理与实践（原书第2版）》，分为“基础篇”和“进阶篇”两册，由 机械工业出版社 出版于2017年4月1日。 —— 译者注">
<em>Programming: Principles and Practice Using C++ (Second edition)</em>
[Stroustrup,2014]</span><sup><a href="#fn_2" id="reffn_2">2</a></sup>，然后再从这里读下去。
就算你以前有过编程经验，你所用过的语言或者所开发过的程序，
也很可能与此书呈现的 C++ 风格大相径庭。</p>
<p>想象一下去某个城市的观光之旅，比如哥本哈根或者纽约。
在几个小时之内，你可以走马观花地逛到主要的打卡点，
听几个相关都市传说，记一些后续旅行的建议。
但你<strong>无法</strong>仅仅通过观光就详尽了解一个城市，
<strong>无法</strong>详察所见所闻，<strong>无法</strong>通晓支配它的规则和潜规则。
要真正了解一个城市，你得在那生活，通常得好几年。
无论如何，只需要一点运气，你就能获取一点概括性的认知、
一个有关该城市特色的便签以及潜在的兴趣列表。
导览结束后，就可以展开深入的探索了。</p>
<p><a class="en-page-number" id="xii"></a></p>
<p>此次导览中的主要C++语言特性，按其支持的编程风格分类，例如面向对象和泛型编程。
不会给出一个详尽的、参考手册式的对语言特性的逐条检视。
基于优秀教科书的惯例，我试图在使用一个特性之前讲解它，
但这并不总是行得通，而且人们也不总是从头至尾地进行阅读。
所以，希望读者能善加利用交叉引用和索引。</p>
<p>与之相似的是，在此次导览中，会以用例的方式呈现标准库，做不到巨细靡遗。
它也不会涉及标准库以外的程序库。读者可按需要检索相关资料。
<span title="The C++ Programming Language (4th Edition)，该书中文版《C++程序设计语言》已经由 机械工业出版社 出版于2019年6月1日。 —— 译者注">
[Stroustrup,2013]</span><sup><a href="#fn_3" id="reffn_3">3</a></sup> 和
<span title="C++ Applications，一个列表，列出了一些全部或绝大部分用 C++ 开发的系统、应用或者程序库，位于作者网站的页面 https://www.stroustrup.com/applications.html —— 译者注">
[Stroustrup,2014]</span><sup><a href="#fn_4" id="reffn_4">4</a></sup>
就是这种资料，此外网络上也有海量的资料（质量参差不齐），
例如 <span title="在线的 C++ 参考手册，网址在 &lt;https://en.cppreference.com&gt;。 —— 译者注">
[Cppreference]</span><sup><a href="#fn_5" id="reffn_5">5</a></sup>。
比方说，当我提到标准库中的某个函数或者类，它的定义就垂手可得，
查阅文档，即可顺藤摸瓜获取大量相关资料。</p>
<p>此导览把 C++ 作为一个整体，而不是像千层饼那样分层呈现。
因此，不会指出语言特性是出自C——作为C++98的一部分，
还是较新的C++11、C++14，或C++17。
此类信息可见于第16章（历史及兼容性）。
我将着眼于本原，尽量简明，但是我没能克制住冲动，介绍了几个超纲的新特性。
这似乎恰好能满足许多已经知悉旧版C++读者的好奇心。</p>
<p>编程语言的参考手册或者标准仅仅规定了可以做什么，但程序员通常对得心应手之道更喜闻乐见。
这个问题通过选题范畴解决了一部分，另一部分解答体现于文本，尤其是忠告小节部分。
更多关于<em>好的不落伍的（good modern）</em>C++要素，参见
<span title="即《C++ 核心指南》，网址在 &lt;https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines&gt; 非官方中文版可参见 &lt;https://github.com/lynnboy/CppCoreGuidelines-zh-CN/blob/master/CppCoreGuidelines-zh-CN.md&gt;">
《C++ Core Guidelines》[Stroustrup,2015]</span><sup><a href="#fn_6" id="reffn_6">6</a></sup>。
该核心指南是一份优秀的资料，可供深入探索本书提到的理念。
你大概会注意到，比对核心指南与本书，其格式甚至编号都极其相似。
其中一个原因是，起草核心指南时，主要出处正是本书第一版。</p>
<h2 id="致谢">致谢</h2>
<p>此处呈现的内容部分援引自《C++程序设计语言（第四版）》，
因此要感谢编撰该书的所有参与者。</p>
<p>感谢所有帮助完善本书第一版的人，以及为其纠错的人。</p>
<p>感谢 Morgan Stanley 让我有时间编写第二版。
感谢哥伦比亚大学2018春季的“Design Using C++”课程，
该课程为本书的一个早期草稿发现了很多笔误及bug，并提供了许多建设性的意见。</p>
<p>感谢 Paul Anderson，Chuck Allison，Peter Gottschling，William Mon，
Charles 以及 Sergey Zubkov，他们审阅此书并给出了很多改进意见。</p>
<blockquote>
<p>纽约，曼哈顿</p>
<p>本贾尼·斯特劳斯特鲁普</p>
</blockquote>
<blockquote id="fn_1">
<sup>1</sup>. 本书英文版出版于 2018 年。 —— 译者注<a href="#reffn_1" title="Jump back to footnote [1] in the text."> ↩</a>
</blockquote>
<blockquote id="fn_2">
<sup>2</sup>. 该书已经有中文版《C++程序设计：原理与实践（原书第2版）》，分为“基础篇”和“进阶篇”两册，由<strong>机械工业出版社</strong>出版于2017年4月1日。 —— 译者注<a href="#reffn_2" title="Jump back to footnote [2] in the text."> ↩</a>
</blockquote>
<blockquote id="fn_3">
<sup>3</sup>. The C++ Programming Language (4th Edition)，该书中文版《C++程序设计语言》已经由<strong>机械工业出版社</strong>出版于2019年6月1日。 —— 译者注<a href="#reffn_3" title="Jump back to footnote [3] in the text."> ↩</a>
</blockquote>
<blockquote id="fn_4">
<sup>4</sup>. C++ Applications，一个列表，列出了一些全部或绝大部分用 C++ 开发的系统、应用或者程序库，位于作者网站的页面 <a href="https://www.stroustrup.com/applications.html" target="_blank">https://www.stroustrup.com/applications.html</a>。 —— 译者注<a href="#reffn_4" title="Jump back to footnote [4] in the text."> ↩</a>
</blockquote>
<blockquote id="fn_5">
<sup>5</sup>. 在线的 C++ 参考手册，网址在 <a href="https://en.cppreference.com" target="_blank">https://en.cppreference.com</a>。 —— 译者注<a href="#reffn_5" title="Jump back to footnote [5] in the text."> ↩</a>
</blockquote>
<blockquote id="fn_6">
<sup>6</sup>. 即《C++ 核心指南》，网址在<a href="https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines" target="_blank">https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines</a>，非官方中文版可参见<a href="https://github.com/lynnboy/CppCoreGuidelines-zh-CN/blob/master/CppCoreGuidelines-zh-CN.md" target="_blank">https://github.com/lynnboy/CppCoreGuidelines-zh-CN/blob/master/CppCoreGuidelines-zh-CN.md</a>。 —— 译者注<a href="#reffn_6" title="Jump back to footnote [6] in the text."> ↩</a>
</blockquote>
<hr>

<script>console.log(window.location.pathname)</script>
<div id="disqus_thread"></div>
<script>

/**
*  RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
*  LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables*/
/*
var disqus_config = function () {
this.page.url = window.location.href;
this.page.identifier = window.location.pathname;
};
*/
(function() { // DON'T EDIT BELOW THIS LINE
var d = document, s = d.createElement('script');
s.src = 'https://a-tour-of-cpp-2nd-cn.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" target="_blank">comments powered by Disqus.</a></noscript>
                                
    

                                </section>
                            
    </div>
    <div class="search-results">
        <div class="has-results">
            
            <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
            <ul class="search-results-list"></ul>
            
        </div>
        <div class="no-results">
            
            <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
            
        </div>
    </div>
</div>

                        </div>
                    </div>
                
            </div>

            
                
                <a href="translation_note.html" class="navigation navigation-prev " aria-label="Previous page: 译者言">
                    <i class="fa fa-angle-left"></i>
                </a>
                
                
                <a href="ch01.html" class="navigation navigation-next " aria-label="Next page: 1 基础知识">
                    <i class="fa fa-angle-right"></i>
                </a>
                
            
        
    </div>

    <script>
        var gitbook = gitbook || [];
        gitbook.push(function() {
            gitbook.page.hasChanged({"page":{"title":"前言","level":"1.2","depth":1,"next":{"title":"1 基础知识","level":"1.3","depth":1,"path":"ch01.md","ref":"ch01.md","articles":[]},"previous":{"title":"译者言","level":"1.1","depth":1,"path":"translation_note.md","ref":"translation_note.md","articles":[]},"dir":"ltr"},"config":{"plugins":["@dogatana/page-toc-button","@dogatana/back-to-top-button","copy-code-button","forkmegithub","disqus-legacy"],"root":"./src","styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"pluginsConfig":{"@dogatana/back-to-top-button":{},"styles":{"website":"styles/website.css"},"search":{},"@dogatana/page-toc-button":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"fontsettings":{"theme":"white","family":"sans","size":2},"highlight":{},"disqus-legacy":{"shortname":"a-tour-of-cpp-2nd-cn"},"copy-code-button":{},"forkmegithub":{"color":"orange","url":"https://github.com/windsting/a-tour-of-cpp-2nd-cn"},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","author":"Windsting","pdf":{"pageNumbers":true,"fontSize":14,"fontFamily":"Arial","paperSize":"a5","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56},"embedFonts":false},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"C++导览 第二版 简体中文版","language":"zh-hans","links":{"sidebar":{"Github Link":"https://github.com/windsting/a-tour-of-cpp-2nd-cn"}},"gitbook":"*","description":"A Tour of C++ (第二版) 非官方中译本"},"file":{"path":"README.md","mtime":"2023-01-02T05:32:51.606Z","type":"markdown"},"gitbook":{"version":"5.1.1","time":"2023-10-27T09:54:29.738Z"},"basePath":".","book":{"language":""}});
        });
    </script>
</div>

        
    <noscript>
        <style>
            .honkit-cloak {
                display: block !important;
            }
        </style>
    </noscript>
    <script>
        // Restore sidebar state as critical path for prevent layout shift
        function __init__getSidebarState(defaultValue){
            var baseKey = "";
            var key = baseKey + ":sidebar";
            try {
                var value = localStorage[key];
                if (value === undefined) {
                    return defaultValue;
                }
                var parsed = JSON.parse(value);
                return parsed == null ? defaultValue : parsed;
            } catch (e) {
                return defaultValue;
            }
        }
        function __init__restoreLastSidebarState() {
            var isMobile = window.matchMedia("(max-width: 600px)").matches;
            if (isMobile) {
                // Init last state if not mobile
                return;
            }
            var sidebarState = __init__getSidebarState(true);
            var book = document.querySelector(".book");
            // Show sidebar if it enabled
            if (sidebarState && book) {
                book.classList.add("without-animation", "with-summary");
            }
        }

        try {
            __init__restoreLastSidebarState();
        } finally {
            var book = document.querySelector(".book");
            book.classList.remove("honkit-cloak");
        }
    </script>
    <script src="gitbook/gitbook.js"></script>
    <script src="gitbook/theme.js"></script>
    
        
        <script src="gitbook/@dogatana/honkit-plugin-page-toc-button/plugin.js"></script>
        
    
        
        <script src="gitbook/@dogatana/honkit-plugin-back-to-top-button/plugin.js"></script>
        
    
        
        <script src="gitbook/gitbook-plugin-copy-code-button/toggle.js"></script>
        
    
        
        <script src="gitbook/gitbook-plugin-forkmegithub/plugin.js"></script>
        
    
        
        <script src="gitbook/gitbook-plugin-search/search-engine.js"></script>
        
    
        
        <script src="gitbook/gitbook-plugin-search/search.js"></script>
        
    
        
        <script src="gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
        
    
        
        <script src="gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
        
    
        
        <script src="gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
        
    

    </body>
</html>

